using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Controls;
using DevExpress.XtraEditors.Repository;
using Microsoft.VisualBasic;
using System;
using System.ComponentModel;
using System.Drawing;
namespace Common.UI
{
	public class XucDateTimeSelectEdit : ComboBoxEdit
	{
		public delegate void DataTimeChangedEventHander(object sender, DateTime begin, DateTime To);
		private IContainer components = null;
		private new RepositoryItemComboBox fProperties;
		private DateTime _begin;
		private DateTime _to;
		private string _defaultText;
		public event XucDateTimeSelectEdit.DataTimeChangedEventHander DataTimeChanged;
		public override int SelectedIndex
		{
			get
			{
				this.SetDateTime(base.Text);
				return base.SelectedIndex;
			}
			set
			{
				base.SelectedIndex = value;
				this.SetDateTime(base.Text);
			}
		}
		public string DefaultText
		{
			get
			{
				return this._defaultText;
			}
			set
			{
				this._defaultText = value;
				base.Text = this._defaultText;
				base.Properties.NullText = this._defaultText;
				base.Properties.NullValuePrompt = this._defaultText;
			}
		}
		public sealed override string Text
		{
			get
			{
				return (base.Text == this._defaultText) ? "" : base.Text;
			}
			set
			{
				if (value != this._defaultText)
				{
					base.Text = value;
				}
			}
		}
		public DateTime From
		{
			get
			{
				return this._begin;
			}
			set
			{
				this._begin = value;
			}
		}
		public DateTime To
		{
			get
			{
				return this._to;
			}
			set
			{
				this._to = value;
			}
		}
		protected override void Dispose(bool disposing)
		{
			if (disposing && this.components != null)
			{
				this.components.Dispose();
			}
			base.Dispose(disposing);
		}
		private void InitializeComponent()
		{
			this.fProperties = new RepositoryItemComboBox();
			((ISupportInitialize)this.fProperties).BeginInit();
			base.SuspendLayout();
			this.fProperties.Buttons.AddRange(new EditorButton[]
			{
				new EditorButton(ButtonPredefines.Combo)
			});
			this.fProperties.Name = "fProperties";
			this.EditValue = "Hôm nay";
			((ISupportInitialize)this.fProperties).EndInit();
			base.ResumeLayout(false);
		}
		private void RaiseDataTimeChangedEventHander(DateTime begin, DateTime To)
		{
			if (this.DataTimeChanged != null)
			{
				this.DataTimeChanged(this, begin, To);
			}
		}
		public XucDateTimeSelectEdit()
		{
			this.InitializeComponent();
			base.ForeColor = Color.DarkGray;
			base.Text = this._defaultText;
			base.ForeColor = Color.DarkGray;
			base.Properties.Items.Clear();
			base.Properties.Items.AddRange(new object[]
			{
				"Hôm nay",
				"Tuần này",
				"Tháng này",
				"Quý này",
				"Năm nay",
				"Tháng 1",
				"Tháng 2",
				"Tháng 3",
				"Tháng 4",
				"Tháng 5",
				"Tháng 6",
				"Tháng 7",
				"Tháng 8",
				"Tháng 9",
				"Tháng 10",
				"Tháng 11",
				"Tháng 12",
				"Quý 1",
				"Quý 2",
				"Quý 3",
				"Quý 4"
			});
		}
		private void SetDateTime(string text)
		{
			if (text == "Hôm nay")
			{
				this.From = DateTime.Now;
				this.To = DateTime.Now;
			}
			else
			{
				if (text == "Tuần này")
				{
					this.From = DateAndTime.DateAdd(DateInterval.Day, (double)(-(double)DateAndTime.Weekday(DateTime.Now, FirstDayOfWeek.Monday)), DateTime.Now);
					this.To = DateAndTime.DateAdd(DateInterval.Day, (double)DateAndTime.Weekday(DateTime.Now, FirstDayOfWeek.Monday), DateTime.Now);
				}
				else
				{
					if (text == "Tháng này")
					{
						this.From = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
						this.To = this.From.AddMonths(1).AddDays(-1.0);
					}
					else
					{
						if (text == "Quý này")
						{
							if (DateTime.Now.Month >= 1 & DateTime.Now.Month <= 3)
							{
								this.From = new DateTime(DateTime.Now.Year, 1, 1);
								this.To = this.From.AddMonths(4).AddDays(-1.0);
							}
							else
							{
								if (DateTime.Now.Month >= 4 & DateTime.Now.Month <= 6)
								{
									this.From = new DateTime(DateTime.Now.Year, 4, 1);
									this.To = this.From.AddMonths(4).AddDays(-1.0);
								}
								else
								{
									if (DateTime.Now.Month >= 7 & DateTime.Now.Month <= 9)
									{
										this.From = new DateTime(DateTime.Now.Year, 9, 1);
										this.To = this.From.AddMonths(4).AddDays(-1.0);
									}
									else
									{
										this.From = new DateTime(DateTime.Now.Year, 10, 1);
										this.To = this.From.AddMonths(4).AddDays(-1.0);
									}
								}
							}
						}
						else
						{
							if (text == "Năm nay")
							{
								this.From = new DateTime(DateTime.Now.Year, 1, 1);
								this.To = this.From.AddMonths(12).AddDays(-1.0);
							}
							else
							{
								if (text == "Tháng 1")
								{
									this.From = new DateTime(DateTime.Now.Year, 1, 1);
									this.To = this.From.AddMonths(1).AddDays(-1.0);
								}
								else
								{
									if (text == "Tháng 2")
									{
										this.From = new DateTime(DateTime.Now.Year, 2, 1);
										this.To = this.From.AddMonths(1).AddDays(-1.0);
									}
									else
									{
										if (text == "Tháng 3")
										{
											this.From = new DateTime(DateTime.Now.Year, 3, 1);
											this.To = this.From.AddMonths(1).AddDays(-1.0);
										}
										else
										{
											if (text == "Tháng 4")
											{
												this.From = new DateTime(DateTime.Now.Year, 4, 1);
												this.To = this.From.AddMonths(1).AddDays(-1.0);
											}
											else
											{
												if (text == "Tháng 5")
												{
													this.From = new DateTime(DateTime.Now.Year, 5, 1);
													this.To = this.From.AddMonths(1).AddDays(-1.0);
												}
												else
												{
													if (text == "Tháng 6")
													{
														this.From = new DateTime(DateTime.Now.Year, 6, 1);
														this.To = this.From.AddMonths(1).AddDays(-1.0);
													}
													else
													{
														if (text == "Tháng 7")
														{
															this.From = new DateTime(DateTime.Now.Year, 7, 1);
															this.To = this.From.AddMonths(1).AddDays(-1.0);
														}
														else
														{
															if (text == "Tháng 8")
															{
																this.From = new DateTime(DateTime.Now.Year, 8, 1);
																this.To = this.From.AddMonths(1).AddDays(-1.0);
															}
															else
															{
																if (text == "Tháng 9")
																{
																	this.From = new DateTime(DateTime.Now.Year, 9, 1);
																	this.To = this.From.AddMonths(1).AddDays(-1.0);
																}
																else
																{
																	if (text == "Tháng 10")
																	{
																		this.From = new DateTime(DateTime.Now.Year, 10, 1);
																		this.To = this.From.AddMonths(1).AddDays(-1.0);
																	}
																	else
																	{
																		if (text == "Tháng 11")
																		{
																			this.From = new DateTime(DateTime.Now.Year, 11, 1);
																			this.To = this.From.AddMonths(1).AddDays(-1.0);
																		}
																		else
																		{
																			if (text == "Tháng 12")
																			{
																				this.From = new DateTime(DateTime.Now.Year, 12, 1);
																				this.To = this.From.AddMonths(1).AddDays(-1.0);
																			}
																			else
																			{
																				if (text == "Quý 1")
																				{
																					this.From = new DateTime(DateTime.Now.Year, 1, 1);
																					this.To = this.From.AddMonths(3).AddDays(-1.0);
																				}
																				else
																				{
																					if (text == "Quý 2")
																					{
																						this.From = new DateTime(DateTime.Now.Year, 4, 1);
																						this.To = this.From.AddMonths(3).AddDays(-1.0);
																					}
																					else
																					{
																						if (text == "Quý 3")
																						{
																							this.From = new DateTime(DateTime.Now.Year, 7, 1);
																							this.To = this.From.AddMonths(3).AddDays(-1.0);
																						}
																						else
																						{
																							if (text == "Quý 4")
																							{
																								this.From = new DateTime(DateTime.Now.Year, 10, 1);
																								this.To = this.From.AddMonths(3).AddDays(-1.0);
																							}
																							else
																							{
																								this.From = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
																								this.To = this.From.AddMonths(1).AddDays(-1.0);
																							}
																						}
																					}
																				}
																			}
																		}
																	}
																}
															}
														}
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
			this.RaiseDataTimeChangedEventHander(this._begin, this._to);
		}
		protected override void OnTextChanged(EventArgs e)
		{
			if (base.Text.Length == 0)
			{
				base.Text = this._defaultText;
				base.ForeColor = Color.DarkGray;
			}
			else
			{
				base.ForeColor = Color.Black;
			}
		}
		protected override void OnLeave(EventArgs e)
		{
			if (base.Text.Length == 0)
			{
				base.Text = this._defaultText;
				base.ForeColor = Color.DarkGray;
			}
		}
		protected override void OnClick(EventArgs e)
		{
			if (base.Text == this._defaultText)
			{
				base.Text = "";
			}
			base.ForeColor = Color.Black;
		}
	}
}
